import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
// ignore: depend_on_referenced_packages
import 'package:url_launcher/url_launcher.dart';

class TextWidget extends StatelessWidget {
  const TextWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: IconButton(
            onPressed: () => Navigator.pop(context),
            icon: const Icon(Icons.arrow_back)),
        title: const Text('文字展示'),
        centerTitle: true,
      ),
      // Column 交叉轴默认设置的就是center，相当于水平居中
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [const DefaultTextStyleWidget(), RichTextWidget()],
      ),
    );
  }
}

/*
文本展示分为默认文本展示和富文本展示
DefaultTextStyle有child属性，更适合设置全局的字体
 */
class DefaultTextStyleWidget extends StatelessWidget {
  const DefaultTextStyleWidget({super.key});
  @override
  Widget build(BuildContext context) {
    return const DefaultTextStyle(
        // textAlign: TextAlign.start,
        overflow: TextOverflow.ellipsis,
        maxLines: 2, // 最大展示行数
        style: TextStyle(
          fontSize: 16,
          color: Color.fromARGB(255, 74, 12, 245),
          // background: Paint()..color = Colors.blue, // 设置文字背景
        ),
        child: Column(
          // Column 交叉轴默认设置的就是center，相当于水平居中
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Text('测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试'),
            // SizedBox(height: 10),
            Text('xzcccccccccccccccccccczxxzcxzczczxczxccxzxzxzr'),
            Text(
              '你上课就是课件课件萨克的时刻就撒娇是的',
              textAlign: TextAlign.justify,
              style: TextStyle(),
            )
          ],
        ));
  }
}

class RichTextWidget extends StatelessWidget {
  RichTextWidget({super.key});
  final TapGestureRecognizer _tap = TapGestureRecognizer();
  @override
  Widget build(BuildContext context) {
    return RichText(
        text: TextSpan(children: [
      TextSpan(
        text: 'ceshi',
        style: const TextStyle(color: Colors.red, fontSize: 20),
        // 点击事件
        recognizer: _tap
          ..onTap = () => launchURL('https://element.eleme.cn/#/zh-CN'),
        mouseCursor: MaterialStateMouseCursor.clickable, // 鼠标手
        semanticsLabel: '这是一个带有语义标签的按钮',
      ),
      const TextSpan(
          text: 'ceshi', style: TextStyle(color: Colors.blue, fontSize: 16)),
      const TextSpan(
          text: 'ceshi', style: TextStyle(color: Colors.green, fontSize: 14))
    ]));
  }
}

// 调转到外部网站 传url
void launchURL(String url) async {
  if (await canLaunchUrl(Uri.parse(url))) {
    await launchUrl(Uri.parse(url));
  } else {
    throw 'Could not launch $url';
  }
}
